<?php


class Login{
    // 用户登陆函数， 随便返回查询用户 uid 
    public function getUser($conn, $username, $password)
    {
        $avatar = null;

        // 根据设置的主键 uid 查：
        // 预处理语句，后面的 ？，也是为了防止黑客的攻击
        $sql = "SELECT avatar, uid, username, age, gender FROM users WHERE username = ? and password = ? LIMIT 1";
        $mysqli_stmt = $conn->prepare($sql);
        
        $mysqli_stmt->bind_param('ss', $username, $password);

        // 执行预处理语句
        if($mysqli_stmt->execute()){
            // bind_result() 绑定结果集中的值到变量

            $uid = 0;

            $mysqli_stmt->bind_result($avatar, $uid, $username, $age, $gender);
            // 遍历结果集
            if($mysqli_stmt->fetch()){
                // echo "登陆成功，欢迎：" . $username . "<br>";
                // echo "年龄：" . $age . "<br>";
                // $gender = $gender == 1 ? '女' : '男';
                // echo "性别：" . $gender . "<br>";

                // echo "<br>";
                
                // 用户登陆的时候，把用户的 uid 随便也一起查询了。成功与否直接用后面的 status 的情况来判断
                // $uidData = array("uid" => $uid, "status" => true);
                // echo $uidData;
                // 下面的一行是用来 debug 用的，来卡住当前页面 echo $uidData; 
                // console.log($uidData);

                // 生成 token 对象，下面通过字符串的形式传给前端
                $auth = new Auth();
                $token = $auth->generate($uid); // token = uid + 时间戳 + key
                $result = array("status" => true, "msg" => $token, "avatarPath" => $avatar);
                return $result; 

                // // 上面登陆成功的话，就跳转到个人首页
                // echo "<script>window.location.href = '../../views/user/person.html?token={$token}'</script>";
            }else{
                // 失败的话也是会设置 $uidData 的
                // 用户登陆的时候，把用户的 uid 随便也一起查询了。成功与否直接用后面的 status 的情况来判断
                // $uidData = array("uid" => $uid, "status" => false);
                // echo $uidData;
                // 下面的一行是用来 debug 用的，来卡住当前页面 echo $uidData; 
                // console.log($uidData);

                $auth = new Auth();
                $token = $auth->generate($uid); // array("uid" => $uid, "token" => md5("{$uid}{$timeStamp}{$this->sessionKey}"));
                $result = array("status" => false, "msg" => $token, "avatarPath" => $avatar);
                return $result;

                // 上面登陆失败的话，跳回到 login.html 页面可以继续登陆
                // echo "<script>alert('登陆失败！！！'); window.location.href = '../../views/office/login.html'</script>";
            }
        }else{
            // 失败的话也是会设置 $uidData 的
            // 用户登陆的时候，把用户的 uid 随便也一起查询了。成功与否直接用后面的 status 的情况来判断
            // $uidData = array("uid" => $uid, "status" => false);
            // echo $uidData;
            // 下面的一行是用来 debug 用的，来卡住当前页面 echo $uidData; 
            // console.log($uidData);

            $auth = new Auth();
            $token = $auth->generate($uid); // token = uid + 时间戳 + key
            $result = array("status" => false, "msg" => $token, "avatarPath" => $avatar);
            return $result;

            // 上面执行失败的话，跳回到 login.html 页面可以继续登陆
            // echo "<script>alert('执行失败！！！'); window.location.href = '../../views/office/login.html'</script>";
        }

        // 释放结果集
        $mysqli_stmt->free_result();
        $mysqli_stmt->close();
        $conn->close(); 
    }
}

